summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKunoiSayami <[email protected]>2023-07-09 03:09:38 +0800
committerKunoiSayami <[email protected]>2023-07-09 03:09:38 +0800
commitc6f4418debfe1f045ef6b36dec5d0cf3a40fd281 (patch)
tree06d25665b97d476538e3cb4236478c10580b7973
parentcbe4695b8bd0a4f0e429af19694030edeaf047a5 (diff)
2023-07-09 03:09
Signed-off-by: KunoiSayami <[email protected]>
-rw-r--r--CMakeLists.txt6
-rw-r--r--expt_0707.cpp40
-rw-r--r--expt_0707_1.cu38
-rw-r--r--publish_0630.cu4
-rw-r--r--sortlib.cuh2
5 files changed, 86 insertions, 4 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index c0e53dc..754e438 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -187,3 +187,9 @@ set_cuda_target_base(expt_0618_3)
add_executable(publish_0630 publish_0630.cu)
set_cuda_target_base(publish_0630)
+
+add_executable(expt_0707 expt_0707.cpp)
+set_target_properties(expt_0707 PROPERTIES LINKER_LANGUAGE CXX)
+
+add_executable(expt_0707_1 expt_0707_1.cu)
+set_cuda_target_base(expt_0707_1) \ No newline at end of file
diff --git a/expt_0707.cpp b/expt_0707.cpp
new file mode 100644
index 0000000..b3e51ff
--- /dev/null
+++ b/expt_0707.cpp
@@ -0,0 +1,40 @@
+
+#include <cstdio>
+#include <iostream>
+#include <limits>
+#define PRINTF_BINARY_PATTERN_INT8 "%c%c%c%c%c%c%c%c"
+#define PRINTF_BYTE_TO_BINARY_INT8(i) \
+ (((i)&0x80ull) ? '1' : '0'), (((i)&0x40ull) ? '1' : '0'), \
+ (((i)&0x20ull) ? '1' : '0'), (((i)&0x10ull) ? '1' : '0'), \
+ (((i)&0x08ull) ? '1' : '0'), (((i)&0x04ull) ? '1' : '0'), \
+ (((i)&0x02ull) ? '1' : '0'), (((i)&0x01ull) ? '1' : '0')
+
+#define PRINTF_BINARY_PATTERN_INT16 \
+ PRINTF_BINARY_PATTERN_INT8 PRINTF_BINARY_PATTERN_INT8
+#define PRINTF_BYTE_TO_BINARY_INT16(i) \
+ PRINTF_BYTE_TO_BINARY_INT8((i) >> 8), PRINTF_BYTE_TO_BINARY_INT8(i)
+#define PRINTF_BINARY_PATTERN_INT32 \
+ PRINTF_BINARY_PATTERN_INT16 PRINTF_BINARY_PATTERN_INT16
+#define PRINTF_BYTE_TO_BINARY_INT32(i) \
+ PRINTF_BYTE_TO_BINARY_INT16((i) >> 16), PRINTF_BYTE_TO_BINARY_INT16(i)
+#define PRINTF_BINARY_PATTERN_INT64 \
+ PRINTF_BINARY_PATTERN_INT32 PRINTF_BINARY_PATTERN_INT32
+#define PRINTF_BYTE_TO_BINARY_INT64(i) \
+ PRINTF_BYTE_TO_BINARY_INT32((i) >> 32), PRINTF_BYTE_TO_BINARY_INT32(i)
+/* --- end macros --- */
+
+template <typename T> void print_type_max(T _) {
+ std::cout << typeid(T).name() << ""
+}
+
+int main() {
+ std::cout << (PRINTF_BINARY_PATTERN_INT64) << std::endl;
+
+ auto last_known_point = 10981552822ULL, val = 10960094149ULL;
+
+ printf("last_known_point = %llu, val = %llu\nlast_known_point - val "
+ "= " PRINTF_BINARY_PATTERN_INT64 "\n",
+ last_known_point, val,
+ PRINTF_BYTE_TO_BINARY_INT64(last_known_point - val));
+ std::cout << std::numeric_limits<size_t>::max() << std::endl;
+} \ No newline at end of file
diff --git a/expt_0707_1.cu b/expt_0707_1.cu
new file mode 100644
index 0000000..61a53c6
--- /dev/null
+++ b/expt_0707_1.cu
@@ -0,0 +1,38 @@
+
+#include <cstdio>
+#include <iostream>
+#define PRINTF_BINARY_PATTERN_INT8 "%c%c%c%c%c%c%c%c"
+#define PRINTF_BYTE_TO_BINARY_INT8(i) \
+ (int)((((i) >> 7) & 1ull) + '0'), (int)((((i) >> 6) & 1ull) + '0'), \
+ (int)((((i) >> 5) & 1ull) + '0'), (int)((((i) >> 4) & 1ull) + '0'), \
+ (int)((((i) >> 3) & 1ull) + '0'), (int)((((i) >> 2) & 1ull) + '0'), \
+ (int)((((i) >> 1) & 1ull) + '0'), (int)((((i)) & 1ull) + '0')
+
+#define PRINTF_BINARY_PATTERN_INT16 \
+ PRINTF_BINARY_PATTERN_INT8 PRINTF_BINARY_PATTERN_INT8
+#define PRINTF_BYTE_TO_BINARY_INT16(i) \
+ PRINTF_BYTE_TO_BINARY_INT8((i) >> 8), PRINTF_BYTE_TO_BINARY_INT8(i)
+#define PRINTF_BINARY_PATTERN_INT32 \
+ PRINTF_BINARY_PATTERN_INT16 PRINTF_BINARY_PATTERN_INT16
+#define PRINTF_BYTE_TO_BINARY_INT32(i) \
+ PRINTF_BYTE_TO_BINARY_INT16((i) >> 16), PRINTF_BYTE_TO_BINARY_INT16(i)
+#define PRINTF_BINARY_PATTERN_INT64 \
+ PRINTF_BINARY_PATTERN_INT32 PRINTF_BINARY_PATTERN_INT32
+#define PRINTF_BYTE_TO_BINARY_INT64(i) \
+ PRINTF_BYTE_TO_BINARY_INT32((i) >> 32), PRINTF_BYTE_TO_BINARY_INT32(i)
+/* --- end macros --- */
+
+__global__ void test() {
+
+ auto last_known_point = 10981552822ULL, val = 10960094149ULL;
+ auto x = last_known_point - val;
+ printf("last_known_point =%llu, val = %llu " PRINTF_BINARY_PATTERN_INT64 "\n",
+ last_known_point, val,
+ PRINTF_BYTE_TO_BINARY_INT64(last_known_point - val));
+}
+
+int main() {
+ std::cout << (PRINTF_BINARY_PATTERN_INT64) << std::endl;
+ test<<<1, 1>>>();
+ cudaDeviceSynchronize();
+} \ No newline at end of file
diff --git a/publish_0630.cu b/publish_0630.cu
index 31e66c9..9cdd7d3 100644
--- a/publish_0630.cu
+++ b/publish_0630.cu
@@ -67,10 +67,9 @@ Conference on Parallel and Distributed Systems, December 2012.
#include <algorithm>
#include <cassert>
#include <cstdio>
-#include <cstdlib>
+#include <cstring>
#include <fstream>
#include <random>
-#include <set>
#include <vector>
typedef unsigned long long key_type;
@@ -121,7 +120,6 @@ inline void __cudaCheckError(const char *file, const int line) {
/// 用於讀入資料的幫助類
/// 該類為模板類,可用於任意類型的讀入資料
template <typename key_type> class ReadHelper_ {
- // typedef unsigned long long key_type;
/// 用來存放最大值和最小值的變數
key_type max_value = std::numeric_limits<key_type>::min(),
diff --git a/sortlib.cuh b/sortlib.cuh
index d9e91a2..d2e148a 100644
--- a/sortlib.cuh
+++ b/sortlib.cuh
@@ -79,7 +79,7 @@ public:
}*/
// son = get_son_from_step(son, (*last_known_point > val));
- auto branch_selector = ((*last_known_point - val) >> MOVE_OFFSET);
+ auto branch_selector = (int)(*last_known_point < val);
// printf("tmp: %llu\n", tmp);
// printf("%llu %llu ", val, *last_known_point);
son = son * 2 + branch_selector;