cumo 0.1.1 → 0.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 621f319a4a92862c60267ace14b39968fb7e5c203da94bb9d1f01b86412b77b3
4
- data.tar.gz: db4964d257fcbe79c6a6f4b8e84ac71f7657c87168d43b7c205d9de5059b02e3
3
+ metadata.gz: 3a00113b29c4cd47082953a1327d8b5c30c29543d42d7b9c3de1fb81a06d44c3
4
+ data.tar.gz: 78014e61144693436adc2c822b40f4520615cbeda8a7776600a3cc53cbe39474
5
5
  SHA512:
6
- metadata.gz: a703d9f146c556af7ef60c869dd44989fdd67d8c2b45f99d337b1cc5dd606a1eace434b46d0b6a7e4a404930351565f2ca3e93f116886a5b915f285a8b1b85d0
7
- data.tar.gz: 9fc0c1c794aeb12f9f5a3cf7866bec32439b09083c3b34869301ac5dc3c602845ec3c51e7caa7bf5022d375e448db5c4c6d3f16f77660645b07fdd5dc2bf29c1
6
+ metadata.gz: e93d0fb045838fd34a047488a287dfc6c777106255b7e0783e56148967f0c773c4e14a6f9590360f2521b277cdb46cd71bdbe307bd0cf68456942e8e26449a7c
7
+ data.tar.gz: cab27fb6523bc0362b5b5bb8e144dbed26c7636bfa7adc8ba69be3f9ad408dd00c2b2a28f59a750108856bb50986f8a398adf0844cfed8150f79475002da56c3
data/README.md CHANGED
@@ -190,7 +190,7 @@ ln -sf "$HOME/opt/ccache/bin/ccache" "$HOME/opt/ccache/bin/nvcc"
190
190
  Use `MAKEFLAGS` environment variable to specify `make` command options. You can build in parallel as:
191
191
 
192
192
  ```
193
- bundle exec MAKEFLAG=-j8 rake compile
193
+ bundle exec env MAKEFLAG=-j8 rake compile
194
194
  ```
195
195
 
196
196
  ### Specify nvcc --generate-code options
@@ -242,6 +242,23 @@ bundle exec DTYPE=dfloat ruby test/narray_test.rb
242
242
  bundle exec CUDA_LAUNCH_BLOCKING=1
243
243
  ```
244
244
 
245
+ ### Disable Cumo warnings
246
+
247
+ As default, cumo shows some warnings once for each.
248
+
249
+ It is possible to disable by followings:
250
+
251
+ ```
252
+ export CUMO_SHOW_WARNING=OFF
253
+ ```
254
+
255
+ You may want to show warnings everytime rather than once:
256
+
257
+ ```
258
+ export CUMO_SHOW_WARNING=ON
259
+ export CUMO_WARNING_ONCE=OFF
260
+ ```
261
+
245
262
  ## Contributing
246
263
 
247
264
  Bug reports and pull requests are welcome on GitHub at https://github.com/sonots/cumo.
@@ -16,7 +16,7 @@ get_cublas_error_msg(cublasStatus_t error) {
16
16
  switch (error) {
17
17
  #define RETURN_MSG(msg) \
18
18
  case msg: \
19
- return #msg
19
+ return (char*)#msg
20
20
 
21
21
  RETURN_MSG(CUBLAS_STATUS_SUCCESS);
22
22
  RETURN_MSG(CUBLAS_STATUS_NOT_INITIALIZED);
@@ -47,6 +47,7 @@ cublasHandle_t
47
47
  cumo_cuda_cublas_handle()
48
48
  {
49
49
  static cublasHandle_t *handles = 0; // handle is never destroyed
50
+ int device;
50
51
  if (handles == 0) {
51
52
  int i;
52
53
  int device_count = cumo_cuda_runtime_get_device_count();
@@ -55,7 +56,7 @@ cumo_cuda_cublas_handle()
55
56
  handles[i] = 0;
56
57
  }
57
58
  }
58
- int device = cumo_cuda_runtime_get_device();
59
+ device = cumo_cuda_runtime_get_device();
59
60
  if (handles[device] == 0) {
60
61
  cublasCreate(&handles[device]);
61
62
  }
@@ -387,6 +387,9 @@ rb_cuModuleUnload(VALUE self, VALUE hmod)
387
387
  void
388
388
  Init_cumo_cuda_driver()
389
389
  {
390
+ CUdevice cuDevice;
391
+ CUcontext context;
392
+
390
393
  VALUE mCumo = rb_define_module("Cumo");
391
394
  VALUE mCUDA = rb_define_module_under(mCumo, "CUDA");
392
395
  mDriver = rb_define_module_under(mCUDA, "Driver");
@@ -413,8 +416,6 @@ Init_cumo_cuda_driver()
413
416
  rb_define_const(mDriver, "CU_JIT_INPUT_OBJECT", INT2NUM(CU_JIT_INPUT_OBJECT));
414
417
  rb_define_const(mDriver, "CU_JIT_INPUT_PTX", INT2NUM(CU_JIT_INPUT_PTX));
415
418
 
416
- CUdevice cuDevice;
417
- CUcontext context;
418
419
  cuInit(0);
419
420
  cuDeviceGet(&cuDevice, 0);
420
421
  cuCtxCreate(&context, 0, cuDevice);
data/ext/cumo/cumo.c CHANGED
@@ -47,6 +47,20 @@ bool cumo_compatible_mode_enabled_p()
47
47
  return cumo_compatible_mode_enabled;
48
48
  }
49
49
 
50
+ static bool cumo_show_warning_enabled;
51
+
52
+ bool cumo_show_warning_enabled_p()
53
+ {
54
+ return cumo_show_warning_enabled;
55
+ }
56
+
57
+ static bool cumo_warning_once_enabled;
58
+
59
+ bool cumo_warning_once_enabled_p()
60
+ {
61
+ return cumo_warning_once_enabled;
62
+ }
63
+
50
64
  /*
51
65
  Enable Numo NArray compatible mode.
52
66
 
@@ -110,6 +124,14 @@ Init_cumo()
110
124
  env = getenv("CUMO_COMPATIBLE_MODE");
111
125
  cumo_compatible_mode_enabled = (env != NULL && strcmp(env, "OFF") != 0 && strcmp(env, "0") != 0 && strcmp(env, "NO") != 0);
112
126
 
127
+ // default is true
128
+ env = getenv("CUMO_SHOW_WARNING");
129
+ cumo_show_warning_enabled = env == NULL || (strcmp(env, "OFF") != 0 && strcmp(env, "0") != 0 && strcmp(env, "NO") != 0);
130
+
131
+ // default is true
132
+ env = getenv("CUMO_WARNING_ONCE");
133
+ cumo_warning_once_enabled = env == NULL || (strcmp(env, "OFF") != 0 && strcmp(env, "0") != 0 && strcmp(env, "NO") != 0);
134
+
113
135
  Init_cumo_narray();
114
136
 
115
137
  Init_cumo_na_step();
@@ -10,10 +10,33 @@ extern "C" {
10
10
  #endif
11
11
  #endif
12
12
 
13
- #define CUMO_VERSION "0.1.1"
14
- #define CUMO_VERSION_CODE 11
13
+ #define CUMO_VERSION "0.1.2"
14
+ #define CUMO_VERSION_CODE 12
15
15
 
16
16
  bool cumo_compatible_mode_enabled_p();
17
+ bool cumo_show_warning_enabled_p();
18
+ bool cumo_warning_once_enabled_p();
19
+
20
+ #define CUMO_SHOW_WARNING_ONCE( c_str ) \
21
+ { \
22
+ if (cumo_show_warning_enabled_p()) { \
23
+ if (cumo_warning_once_enabled_p()) { \
24
+ static bool show_warning = true; \
25
+ if (show_warning) { \
26
+ fprintf(stderr, (c_str)); \
27
+ show_warning = false; \
28
+ } \
29
+ } else { \
30
+ fprintf(stderr, (c_str)); \
31
+ } \
32
+ } \
33
+ }
34
+
35
+ #define CUMO_SHOW_SYNCHRONIZE_FIXME_WARNING_ONCE( func_name, type_name ) \
36
+ CUMO_SHOW_WARNING_ONCE("Warning: FIXME: Method \"" func_name "\" for dtype \"" type_name "\" synchronizes with CPU.\n")
37
+
38
+ #define CUMO_SHOW_SYNCHRONIZE_WARNING_ONCE( func_name, type_name ) \
39
+ CUMO_SHOW_WARNING_ONCE("Warning: Method \"" func_name "\" for dtype \"" type_name "\" synchronizes with CPU.\n")
17
40
 
18
41
  #if defined(__cplusplus)
19
42
  #if 0
@@ -145,19 +145,4 @@ cumo_is_aligned_step(const ssize_t step, const size_t alignment)
145
145
  return ((step) & ((alignment)-1)) == 0;
146
146
  }
147
147
 
148
- #define CUMO_SHOW_WARNING_ONCE( c_str ) \
149
- { \
150
- static bool show_warning = true; \
151
- if (show_warning) { \
152
- fprintf(stderr, (c_str)); \
153
- show_warning = false; \
154
- } \
155
- }
156
-
157
- #define CUMO_SHOW_SYNCHRONIZE_FIXME_WARNING_ONCE( func_name, type_name ) \
158
- CUMO_SHOW_WARNING_ONCE("Warning: FIXME: Method \"" func_name "\" for dtype \"" type_name "\" synchronizes with CPU.\n")
159
-
160
- #define CUMO_SHOW_SYNCHRONIZE_WARNING_ONCE( func_name, type_name ) \
161
- CUMO_SHOW_WARNING_ONCE("Warning: Method \"" func_name "\" for dtype \"" type_name "\" synchronizes with CPU.\n")
162
-
163
148
  #endif /* ifndef CUMO_TEMPLATE_H */
@@ -92,7 +92,6 @@ static void
92
92
  <%=shift_set%>
93
93
 
94
94
  CUMO_SHOW_SYNCHRONIZE_FIXME_WARNING_ONCE("<%=name%>", "<%=type_name%>");
95
- CUMO_SHOW_SYNCHRONIZE_WARNING_ONCE("<%=name%>", "<%=type_name%>");
96
95
  cumo_cuda_runtime_check_status(cudaDeviceSynchronize());
97
96
  if (idx1) {
98
97
  for (; i--;) {
@@ -1,5 +1,6 @@
1
1
  #include <string.h>
2
2
  #include <ruby.h>
3
+ #include "cumo.h"
3
4
  #include "cumo/narray.h"
4
5
  #include "cumo/cuda/runtime.h"
5
6
  #include "cumo/template.h"
@@ -1,4 +1,5 @@
1
1
  #include <ruby.h>
2
+ #include "cumo.h"
2
3
  #include "cumo/narray.h"
3
4
  #include "cumo/cuda/memory_pool.h"
4
5
  #include "cumo/cuda/runtime.h"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cumo
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Naotoshi Seo
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-10-10 00:00:00.000000000 Z
11
+ date: 2018-11-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: numo-narray