[Git] 다른 브랜치와 합치지는 않되 특정 커밋은 가져오고 싶은 경우


여러 브랜치에서 작업을 하다가 공통된 코드에 변경이 있을 경우, 병합은 하지 않으면서 똑같은 커밋을 여러 브랜치에서 사용하고 싶을 때가 있습니다. 그럴 때에는 체리픽 (cherry-pick) 명령어를 사용하면 됩니다.


// 만약에 브랜치1에 있는 abcd1234라는 SHA-1 ID로 시작하는 커밋을 브랜치2에 적용시키려면


git checkout 브랜치2

git cherry-pick abcd1234


[토치 (Torch)] error: more than one operator "==" matches these operands

 

Lua 기반의 딥 러닝 프레임워크인 토치(Torch)를 빌드하다 보면 error: more than one operator "==" matches these operands 와 같은 에러 메시지가 뜰 때가 있습니다. 이 현상은 CUDA가 9.0 버전에서부터 절반 정확도의 부동 소수점 연산을 지원하면서 생기는 문제입니다. 이럴 때에는 빌드 전에 다음과 같이 환경 변수를 추가로 지정해주면 됩니다.

 

export TORCH_NVCC_FLAGS="-D__CUDA_NO_HALF_OPERATORS__"

 

이 글을 쓸 때에 https://github.com/torch/torch7/issues/1086 를 참조하였습니다.

[자바] 밑줄 (_) 이 들어가는 JNI 함수명


JNI에서는 함수명에 자바의 패키지 경로를 모두 쓰게 되는데, 그 때에 .(점)을 _(밑줄)로 치환하게 됩니다. 따라서 자바 함수명 자체에 밑줄이 있으면 문제가 생깁니다. 이런 경우 자바 함수명에 있는 밑줄은 JNI에서 _1로 치환하면 됩니다. 아래는 간단한 예제입니다.


// 자바

package com.tistory.crmn;

public class Hello {

    static native int get_hello();

}



// JNI

extern "C" JNIEXPORT jint JNICALL

Java_com_tistory_crmn_Hello_get_1hello(JNIEnv* env, jobject thiz) { // get_1hello에 주목하세요

    return (jint) 1;

}


+ Recent posts