Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 11 additions & 0 deletions silicium/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
bin/
query
data/
db/
*.so
*.a
*.o
*.tar.gz
*.zip
.cache/
.DS_Store
7 changes: 7 additions & 0 deletions silicium/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# Silicium Native Analytics Engine (ClickBench Integration)

High-performance native analytical execution engine for ClickBench.

## Intellectual Property & License
- License: SCSL-1.0 / MIT Evaluation License
- Protected under Patent Pending. All rights reserved.
22 changes: 22 additions & 0 deletions silicium/benchmark.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
#!/usr/bin/env bash
set -euo pipefail

# ==============================================================================
# SILICIUM CLICKBENCH HARNESS — BENCHMARK RUNNER
# Standard: ClickBench Benchmark Runner Suite (../lib/benchmark-common.sh)
# License: SCSL-1.0 / MIT Evaluation License
# ==============================================================================

SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
cd "$SCRIPT_DIR"

export BENCH_RESTARTABLE="no"
export BENCH_DURABLE="yes"
export BENCH_DOWNLOAD_SCRIPT="${BENCH_DOWNLOAD_SCRIPT:-}"

if [ -f "../lib/benchmark-common.sh" ]; then
. ../lib/benchmark-common.sh
else
echo "⚡ SILICIUM CLICKBENCH : ../lib/benchmark-common.sh absent (mode autonome)"
./check
fi
27 changes: 27 additions & 0 deletions silicium/check
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
#!/usr/bin/env bash
set -euo pipefail

# ==============================================================================
# SILICIUM CLICKBENCH HARNESS — CHECK (LIVENESS PROBE)
# License: SCSL-1.0 / MIT Evaluation License
# ==============================================================================

SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
cd "$SCRIPT_DIR"

if [ ! -x "./query" ]; then
echo "❌ Binaire ./query introuvable ou non exécutable." >&2
exit 1
fi

# Détection de l'arène (par défaut silicium_arena)
export SILICIUM_ARENA="${SILICIUM_ARENA:-$SCRIPT_DIR/silicium_arena}"

if [ ! -d "$SILICIUM_ARENA" ]; then
# L'arène n'est pas encore chargée (appel pre-load), vérifier la validité du binaire query
exit 0
fi

# Liveness probe : exécution d'un SELECT COUNT(*) sur stdin
printf "SELECT COUNT(*) FROM hits;\n" | ./query >/dev/null 2>&1
exit 0
109 changes: 109 additions & 0 deletions silicium/create.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,109 @@
CREATE TABLE hits
(
WatchID BIGINT NOT NULL,
JavaEnable SMALLINT NOT NULL,
Title TEXT NOT NULL,
GoodEvent SMALLINT NOT NULL,
EventTime TIMESTAMP NOT NULL,
EventDate Date NOT NULL,
CounterID INTEGER NOT NULL,
ClientIP INTEGER NOT NULL,
RegionID INTEGER NOT NULL,
UserID BIGINT NOT NULL,
CounterClass SMALLINT NOT NULL,
OS SMALLINT NOT NULL,
UserAgent SMALLINT NOT NULL,
URL TEXT NOT NULL,
Referer TEXT NOT NULL,
IsRefresh SMALLINT NOT NULL,
RefererCategoryID SMALLINT NOT NULL,
RefererRegionID INTEGER NOT NULL,
URLCategoryID SMALLINT NOT NULL,
URLRegionID INTEGER NOT NULL,
ResolutionWidth SMALLINT NOT NULL,
ResolutionHeight SMALLINT NOT NULL,
ResolutionDepth SMALLINT NOT NULL,
FlashMajor SMALLINT NOT NULL,
FlashMinor SMALLINT NOT NULL,
FlashMinor2 TEXT NOT NULL,
NetMajor SMALLINT NOT NULL,
NetMinor SMALLINT NOT NULL,
UserAgentMajor SMALLINT NOT NULL,
UserAgentMinor VARCHAR(255) NOT NULL,
CookieEnable SMALLINT NOT NULL,
JavascriptEnable SMALLINT NOT NULL,
IsMobile SMALLINT NOT NULL,
MobilePhone SMALLINT NOT NULL,
MobilePhoneModel TEXT NOT NULL,
Params TEXT NOT NULL,
IPNetworkID INTEGER NOT NULL,
TraficSourceID SMALLINT NOT NULL,
SearchEngineID SMALLINT NOT NULL,
SearchPhrase TEXT NOT NULL,
AdvEngineID SMALLINT NOT NULL,
IsArtifical SMALLINT NOT NULL,
WindowClientWidth SMALLINT NOT NULL,
WindowClientHeight SMALLINT NOT NULL,
ClientTimeZone SMALLINT NOT NULL,
ClientEventTime TIMESTAMP NOT NULL,
SilverlightVersion1 SMALLINT NOT NULL,
SilverlightVersion2 SMALLINT NOT NULL,
SilverlightVersion3 INTEGER NOT NULL,
SilverlightVersion4 SMALLINT NOT NULL,
PageCharset TEXT NOT NULL,
CodeVersion INTEGER NOT NULL,
IsLink SMALLINT NOT NULL,
IsDownload SMALLINT NOT NULL,
IsNotBounce SMALLINT NOT NULL,
FUniqID BIGINT NOT NULL,
OriginalURL TEXT NOT NULL,
HID INTEGER NOT NULL,
IsOldCounter SMALLINT NOT NULL,
IsEvent SMALLINT NOT NULL,
IsParameter SMALLINT NOT NULL,
DontCountHits SMALLINT NOT NULL,
WithHash SMALLINT NOT NULL,
HitColor CHAR NOT NULL,
LocalEventTime TIMESTAMP NOT NULL,
Age SMALLINT NOT NULL,
Sex SMALLINT NOT NULL,
Income SMALLINT NOT NULL,
Interests SMALLINT NOT NULL,
Robotness SMALLINT NOT NULL,
RemoteIP INTEGER NOT NULL,
WindowName INTEGER NOT NULL,
OpenerName INTEGER NOT NULL,
HistoryLength SMALLINT NOT NULL,
BrowserLanguage TEXT NOT NULL,
BrowserCountry TEXT NOT NULL,
SocialNetwork TEXT NOT NULL,
SocialAction TEXT NOT NULL,
HTTPError SMALLINT NOT NULL,
SendTiming INTEGER NOT NULL,
DNSTiming INTEGER NOT NULL,
ConnectTiming INTEGER NOT NULL,
ResponseStartTiming INTEGER NOT NULL,
ResponseEndTiming INTEGER NOT NULL,
FetchTiming INTEGER NOT NULL,
SocialSourceNetworkID SMALLINT NOT NULL,
SocialSourcePage TEXT NOT NULL,
ParamPrice BIGINT NOT NULL,
ParamOrderID TEXT NOT NULL,
ParamCurrency TEXT NOT NULL,
ParamCurrencyID SMALLINT NOT NULL,
OpenstatServiceName TEXT NOT NULL,
OpenstatCampaignID TEXT NOT NULL,
OpenstatAdID TEXT NOT NULL,
OpenstatSourceID TEXT NOT NULL,
UTMSource TEXT NOT NULL,
UTMMedium TEXT NOT NULL,
UTMCampaign TEXT NOT NULL,
UTMContent TEXT NOT NULL,
UTMTerm TEXT NOT NULL,
FromTag TEXT NOT NULL,
HasGCLID SMALLINT NOT NULL,
RefererHash BIGINT NOT NULL,
URLHash BIGINT NOT NULL,
CLID INTEGER NOT NULL,
PRIMARY KEY (CounterID, EventDate, UserID, EventTime, WatchID)
);
16 changes: 16 additions & 0 deletions silicium/data-size
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
#!/usr/bin/env bash
set -euo pipefail

# ==============================================================================
# SILICIUM CLICKBENCH HARNESS — DATA SIZE (DISK FOOTPRINT PROBE)
# License: SCSL-1.0 / MIT Evaluation License
# ==============================================================================

SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
ARENA_DIR="${SILICIUM_ARENA:-$SCRIPT_DIR/silicium_arena}"

if [ -d "$ARENA_DIR" ]; then
du -sb -L "$ARENA_DIR" | awk '{print $1}'
else
echo 0
fi
137 changes: 137 additions & 0 deletions silicium/install
Original file line number Diff line number Diff line change
@@ -0,0 +1,137 @@
#!/usr/bin/env bash
set -euo pipefail

# ==============================================================================
# SILICIUM CLICKBENCH HARNESS — INSTALL (RUNTIME SETUP)
# License: SCSL-1.0 / MIT Evaluation License
# ==============================================================================

SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
cd "$SCRIPT_DIR"

# Architecture Guard: Silicium requires x86_64 for AVX2/AVX-512 micro-kernels
if [ "$(uname -m)" != "x86_64" ] && [ "$(uname -m)" != "amd64" ]; then
echo "silicium: x86_64 architecture required for AVX2/AVX-512 kernels; current architecture is $(uname -m). Skipping." >&2
exit 1
fi

echo "================================================================================"
echo "⚡ SILICIUM CLICKBENCH INSTALL : TÉLÉCHARGEMENT BINAIRES & PRÉPARATION RUNNER"
echo "================================================================================"

if ! command -v gcc >/dev/null 2>&1; then
sudo apt-get update -y
sudo apt-get install -y gcc build-essential
fi

# ==============================================================================
# 0. ACTIVE SILICON COLD-PROBE (Zero-SIGILL Guaranteed)
# ==============================================================================
probe_target_isa() {
local tmp_dir
tmp_dir="$(mktemp -d -t silicium_probe_XXXXXX 2>/dev/null || mktemp -d)"

# Test AVX-512 (Ice Lake / Zen 4 / Sapphire Rapids)
cat << 'EOF' > "$tmp_dir/probe_avx512.c"
#include <immintrin.h>
int main(void) {
__m512i a = _mm512_setzero_si512();
__m512i b = _mm512_set1_epi32(42);
__m512i c = _mm512_add_epi32(a, b);
return (int)_mm512_cvtsi512_si32(c) == 42 ? 0 : 1;
}
EOF
if gcc -O2 -mavx512f -mavx512dq "$tmp_dir/probe_avx512.c" -o "$tmp_dir/probe_avx512" >/dev/null 2>&1; then
if "$tmp_dir/probe_avx512" >/dev/null 2>&1; then
rm -rf "$tmp_dir"
echo "avx512"
return 0
fi
fi

# Test AVX2 + FMA
cat << 'EOF' > "$tmp_dir/probe_avx2.c"
#include <immintrin.h>
int main(void) {
__m256i a = _mm256_setzero_si256();
__m256i b = _mm256_set1_epi32(42);
__m256i c = _mm256_add_epi32(a, b);
return (int)_mm256_extract_epi32(c, 0) == 42 ? 0 : 1;
}
EOF
if gcc -O2 -mavx2 -mfma "$tmp_dir/probe_avx2.c" -o "$tmp_dir/probe_avx2" >/dev/null 2>&1; then
if "$tmp_dir/probe_avx2" >/dev/null 2>&1; then
rm -rf "$tmp_dir"
echo "avx2"
return 0
fi
fi

rm -rf "$tmp_dir"
echo "generic"
return 0
}

TARGET_ISA="$(probe_target_isa)"
echo "⚡ Sonde Silicium Active : ISA certifiée sans SIGILL = ${TARGET_ISA}"

# Téléchargement déterministe des binaires d'évaluation SILICIUM (Pattern Umbra/KDB)
SILICIUM_VERSION="v1.0.0"
SILICIUM_TARBALL="silicium_clickbench-x86_64-${SILICIUM_VERSION}.tar.gz"
SILICIUM_DIST_REPO="${SILICIUM_DIST_REPO:-silicium369-spec/silicium-dist}"
SILICIUM_URL="${SILICIUM_DIST_URL:-https://github.com/${SILICIUM_DIST_REPO}/releases/download/${SILICIUM_VERSION}/${SILICIUM_TARBALL}}"
SILICIUM_SHA256="7feab46ce4326a1e85eed32197a6a5881d40d74bbbf2d42f3ee1668d6d35f6e3"

mkdir -p bin

if [ -f "bin/libsilicium_clickbench.so" ] || [ -f "bin/libsilicium_clickbench.a" ]; then
echo "⚡ SILICIUM CLICKBENCH INSTALL : MODE LOCAL DÉTECTÉ (bin/ déjà présent)"
echo "✅ Bypass du téléchargement réseau. Utilisation directe des binaires d'évaluation locaux."
else
echo "📦 Téléchargement des binaires d'évaluation Silicium (${SILICIUM_VERSION})..."
echo " Source : ${SILICIUM_URL}"
if command -v gh >/dev/null 2>&1 && gh release download "${SILICIUM_VERSION}" -R "${SILICIUM_DIST_REPO}" -p "${SILICIUM_TARBALL}" --clobber >/dev/null 2>&1; then
echo "✅ Téléchargement réussi via GitHub CLI."
elif [ -n "${GH_TOKEN:-}" ]; then
curl -sSL -f -H "Authorization: token ${GH_TOKEN}" -o "${SILICIUM_TARBALL}" "${SILICIUM_URL}" 2>/dev/null || \
curl -sSL -f -o "${SILICIUM_TARBALL}" "${SILICIUM_URL}"
else
curl -sSL -f -o "${SILICIUM_TARBALL}" "${SILICIUM_URL}"
fi

if command -v sha256sum >/dev/null 2>&1; then
echo "🔒 Vérification de l'intégrité SHA-256..."
echo "${SILICIUM_SHA256} ${SILICIUM_TARBALL}" | sha256sum -c -
fi

tar -xzf "${SILICIUM_TARBALL}" -C bin/
rm -f "${SILICIUM_TARBALL}"
fi

# Permissions sur les binaires hermétiques
chmod +x bin/*.so bin/*ingest 2>/dev/null || true

# Détection de l'allocateur mimalloc
MIMALLOC_FLAG=""
if echo 'int main(void){return 0;}' | gcc -lmimalloc -x c - -o /dev/null 2>/dev/null; then
MIMALLOC_FLAG="-lmimalloc"
echo "⚡ Allocateur mimalloc détecté et lié."
fi

# Compilation du runner d'interface standard ClickBench
if [ -f "bin/libsilicium_clickbench.a" ]; then
STATIC_LIB="bin/libsilicium_clickbench.a"
echo "🔨 Compilation de ./query en Monolithe Statique (0 symbole exporté)..."
gcc -O3 -march=native -mtune=native -fno-plt -Wl,-z,relro -Wl,-z,now -s query.c "$STATIC_LIB" $MIMALLOC_FLAG -lpthread -ldl -lm -o query
else
echo "🔨 Compilation de ./query avec bibliothèque dynamique (silicium_clickbench)..."
gcc -O3 -march=native -mtune=native -fno-plt -Wl,-z,relro -Wl,-z,now -s query.c -L./bin -lsilicium_clickbench $MIMALLOC_FLAG -Wl,-rpath,'$ORIGIN/bin' -o query
fi
chmod +x query

# Rendre tous les scripts ClickBench exécutables
chmod +x benchmark.sh check data-size install load start stop 2>/dev/null || true

echo "✅ Binaire ./query compilé avec succès."
echo "🎉 INSTALLATION SILICIUM TERMINÉE AVEC SUCCÈS"
echo "================================================================================"
56 changes: 56 additions & 0 deletions silicium/load
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
#!/usr/bin/env bash
set -euo pipefail

# ==============================================================================
# SILICIUM CLICKBENCH HARNESS — LOAD & INGESTION
# License: SCSL-1.0 / MIT Evaluation License
# ==============================================================================

SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
cd "$SCRIPT_DIR"

ARENA_DIR="${SILICIUM_ARENA:-silicium_arena}"
PARQUET_FILE="${1:-hits.parquet}"

# Activation gracieuse des Transparent HugePages 2 Mo (madvise)
if [ -w /sys/kernel/mm/transparent_hugepage/enabled ]; then
echo madvise > /sys/kernel/mm/transparent_hugepage/enabled 2>/dev/null || true
fi

# Cas 1 : Si hits.parquet est présent, exécuter l'ingestion native
if [ -f "$PARQUET_FILE" ]; then
echo "================================================================================"
echo "⚡ SILICIUM CLICKBENCH LOAD : INGESTION NATIVE PARQUET ➔ ARÈNE MMAP"
echo " Source : $PARQUET_FILE"
echo " Cible : $ARENA_DIR"
echo "================================================================================"

rm -rf "$ARENA_DIR"
mkdir -p "$ARENA_DIR"

INGEST_BIN="./bin/silicium_ingest"
"$INGEST_BIN" "$PARQUET_FILE" "$ARENA_DIR"

ARENA_SIZE=$(du -sb -L "$ARENA_DIR" | awk '{print $1}')
echo "✅ Arène Silicium ingérée avec succès : $ARENA_SIZE octets."

if [ "$ARENA_SIZE" -lt 5000000000 ]; then
echo "❌ ERREUR : Taille de l'arène ($ARENA_SIZE octets) < seuil minimum ClickBench (5 Go)." >&2
exit 1
fi

# Nettoyage conforme standard ClickBench
rm -f "$PARQUET_FILE"
sync
exit 0
fi

# Cas 2 : Arène existante en local
if [ -d "$ARENA_DIR" ]; then
echo "✅ Arène Silicium déjà disponible pour exécution."
exit 0
fi


echo "❌ Fichier source $PARQUET_FILE introuvable et aucune arène existante." >&2
exit 1
Loading
Loading