tch 0.0.1

PyTorch wrappers for rust
use libc::c_int;
extern "C" {
    fn atc_get_num_threads() -> c_int;
    fn atc_set_num_threads(n: c_int);
    fn atc_cuda_device_count() -> c_int;
    fn atc_cuda_is_available() -> c_int;
    fn atc_cudnn_is_available() -> c_int;
    fn atc_set_benchmark_cudnn(b: c_int);
}

pub fn get_num_threads() -> i64 {
    let res = unsafe_torch!({ atc_get_num_threads() });
    i64::from(res)
}

pub fn set_num_threads(num_threads: i64) {
    unsafe_torch!({ atc_set_num_threads(num_threads as i32) })
}

pub fn cuda_device_count() -> i64 {
    let res = unsafe_torch!({ atc_cuda_device_count() });
    i64::from(res)
}

pub fn cuda_is_available() -> bool {
    unsafe_torch!({ atc_cuda_is_available() }) != 0
}

pub fn cudnn_is_available() -> bool {
    unsafe_torch!({ atc_cudnn_is_available() }) != 0
}

pub fn set_benchmark_cudnn(b: bool) {
    unsafe_torch!({ atc_set_benchmark_cudnn(if b { 1 } else { 0 }) })
}